package com.lihepeng.leecode.thread;

/**
 * PV 操作
 * p 代表通过 s -1 如果结果小于0 将进程设置为等待信号量S 的状态  
 * -- V  代表信号量+1 如果结果不大于0 释放一个等待信号量的进程  
 * 信号量S 当他大于0 的时候  代表 资源数量 小于0 的时候代表等待的线程数量
 */
public class PVOperation {
    private int  count;

    public PVOperation(int count) {
        this.count = count;
    }

    public PVOperation() {
    }
    
    public synchronized  void Wait(){
        count--;
        if(count<0){
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    }
    public synchronized void Signal(){
        count++;
        if (count<=0){
            this.notify();
        }

    }
}
